
# TensorFlow2教程-Keras概述

# Keras 是一个用于构建和训练深度学习模型的高阶 API。它可用于快速设计原型、高级研究和生产。
#
# Keras的3个优点：

# 方便用户使用、模块化和可组合、易于扩展


import tensorflow as tf
from tensorflow.keras import layers
import numpy as np

import  numpy as np
print(tf.__version__) # 2.1.0
print(tf.keras.__version__) # 2.2.4 -tf

# 简单模型

model = tf.keras.Sequential()
model.add(layers.Dense(32, activation=tf.keras.activations.relu))
model.add(layers.Dense(32, activation=tf.keras.activations.relu))
model.add(layers.Dense(10, activation=tf.keras.activations.softmax))
model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
             loss=tf.keras.losses.categorical_crossentropy,
             metrics=[tf.keras.metrics.categorical_accuracy])


train_x = np.random.random((1000, 72))
train_y = np.random.random((1000, 10))
val_x = np.random.random((200, 72))
val_y = np.random.random((200, 10))

model.fit(train_x, train_y, epochs=100, batch_size=100,
          validation_data=(val_x, val_y))


model.summary()


# 模型评估
test_x = np.random.random((1000, 72))
test_y = np.random.random((1000, 10))
model.evaluate(test_x, test_y, batch_size=32)
test_data = tf.data.Dataset.from_tensor_slices((test_x, test_y))
test_data = test_data.batch(32).repeat()

model.evaluate(test_data, steps=30)

#模型预测

# 模型预测
result = model.predict(test_x, batch_size=32)

print(result.shape) # 输出结果的shape
print(result)